iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
自我挑戰組

30天初探tensorflow之旅系列 第 14

Day 14 Softmax 模型的訓練和評估

  • 分享至 

  • xImage
  •  

我一直不太懂訓練模型是什麼意思,或實際是如何運作的,今天要接續昨天對 Softmax 模型深入研究。
訓練模型能夠做什麼呢?
(1)可以讓模型從訓練數據中學習特徵和模式,有助於它進行預測或分類。
(2)不斷調整模型參數,可以提高在未來數據上預測的準確性。
(3)過程中使用損失函數衡量模型的表現,通過最小化損失來優化模型的性能。
TensorFlow 官方證實現今最好的模型準確率高達 0.997,我們自己做的模型都很精簡,要那麼高的準確率,可以使用卷積神經網絡等先進架構,他們更擅長處理圖像數據。

以下簡單實作如何訓練評估模型,有個基本概念。
先丟欲處理數據,並正規化數據:

import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

重新調整數據以符合模型輸入:

x_train = x_train.reshape((60000, 28 * 28))
x_test = x_test.reshape((10000, 28 * 28))

將標籤轉換為 one-hot 編碼,one-hot 編碼表示該位元組或向量裡僅容許其中一位爲1,其他位都必須爲0:

y_train = tf.keras.utils.to_categorical(y_train, 10)
y_test = tf.keras.utils.to_categorical(y_test, 10)

構建並編譯 Softmax 模型:

model = models.Sequential()
model.add(layers.Dense(128, activation='relu', input_shape=(28 * 28,)))
model.add(layers.Dense(10, activation='softmax'))  # 最後一層使用 Softmax
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

訓練模型:

model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.2)

評估模型:

test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_accuracy:.4f}')

可以用以上程式測試資料集上評估模型的準確性。


上一篇
Day 13 實作Softmax模型
下一篇
Day 15 認識激勵函數
系列文
30天初探tensorflow之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言